package com.sh.data.engine.domain.dataquality.service;

import com.sh.data.engine.domain.dataquality.model.domain.*;

import java.util.List;

/**
 * @author tinglan.ys
 * @description:
 * @date 2022/2/15 下午6:09
 */
public interface DataQualityViewService {

    /**
     * @description : 数据质量问题分布
     * @author : tinglan.ys
     * @date : 2022/3/3
     */
    List<DataQualityDistributeDomain> dataQualityDisTypeService(Integer timeType, Long projectId);

    /**
     * @description : 数据质量上层表信息
     * @author : tinglan.ys
     * @date : 2022/3/3
     */
    DataQualityViewTableDomain dataQualityTableService(Long projectId);

    /**
     * @description : 数据质量图表展示
     * @author : tinglan.ys
     * @date : 2022/3/4
     */
    DataQualityChartDomain dataQualityChartService(Long projectId);

    Boolean testData();

    /**
     * @description : 近七天的数据
     * @author : tinglan.ys
     * @date : 2022/3/4
     */
    List<DataQualityViewWeekModelDaoDomain> listProblemTendWeek(Long projectId);

    /**
     * @description : top10
     * @author : tinglan.ys
     * @date : 2022/3/4
     */
    List<DataQualityViewTopModelDaoDomain> listProblemTop(Long projectId);

    /**
     * @description : 数据质量分布：按日
     * @author : tinglan.ys
     * @date : 2022/3/4
     */
    List<DataQualityViewDisModelDaoDomain> listProblemDisByDay(Long projectId);

    /**
     * @description : 数据质量分布：按周
     * @author : tinglan.ys
     * @date : 2022/3/4
     */
    List<DataQualityViewDisModelDaoDomain> listProblemDisByWeek(Long projectId);

    /**
     * @description : 数据质量分布：按月
     * @author : tinglan.ys
     * @date : 2022/3/4
     */
    List<DataQualityViewDisModelDaoDomain> listProblemDisByMonth(Long projectId);

    /**
     * @description : 查询表相关的数据（当天00：00：00后产生的数据）
     * @author : tinglan.ys
     * @date : 2022/3/4
     */
    DataQualityViewTableModelDaoDomain getProblemTableInfo(Long projectId);

    /**
     * @description : 统计某个任务下的字段执行记录
     * @author : tinglan.ys
     * @date : 2022/3/31
     */
    List<DataQualityJobRuleFieldCustomDaoDomain> getRuleAlarmInfo(Long jobId);

    /**
     * @description : 今天问题数量统计
     * @author : tinglan.ys
     * @date : 2022/8/29
     */
    Integer getProblemTotal(Long projectId);

    /**
     * @description : 今天异常
     * @author : tinglan.ys
     * @date : 2022/8/29
     */
    List<DataQualityTodayExceptionDaoDomain> listTodayException(Long projectId);
}
